fun main(args: Array<String>) {
    //for循环可以对任何提供迭代器的对象进行遍历，语法如下：
    val connection = listOf("a", "b", "c")
    for (item in connection) println(item)

    //循环体可以是一个代码块
    val ints = listOf(1, 2, 3)
    for (item: Int in ints) {

    }

    /**
     * 如上所述，for可以循环遍历任何提供了迭代器的对象，即：
     * 有一个成员函数或者扩展函数iterator(), 它的返回类型
     *      有一个成员函数或者扩展函数next()，并且
     *      有一个成员函数或者扩展函数hasNext()返回Boolean
     * 这三个函数都需要标记为operator
     * 对数组的for循环会被编辑为并不创建迭代器的基于索引的循环。
     * 如果你想要通过索引遍历一个数组或者一个list，你可以这么做：
     */
    val array = listOf(1, 2, 3)
    for (i in array) {
        println(array[i-1])
    }

    //注意这种“在区间上遍历”会编译成优化的实现而不会创建额外对象。
    //或者你可以用库函数 withIndex ：
    for ((index,value)in array.withIndex()){
        println("the element at $index is $value")
    }

}
